package com.zhdl.common.ytools;

import lombok.extern.slf4j.Slf4j;

import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;

@Slf4j
public class BaseDateTools {

    /**
     * 获取当前时间 YYYY-MM-DD HH:mm:ss
     *
     * @return /
     */
    public static String currentTimeString() {
        // 获取当前时间
        LocalDateTime now = LocalDateTime.now();
        // 定义时间格式
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        // 格式化当前时间为字符串
        return now.format(formatter);
    }

    /**
     * 获取当前时间戳 long 毫秒
     *
     * @return /
     */
    public static long currentTimestamp() {
        // 获取当前时间戳（毫秒）
        return System.currentTimeMillis();
    }

    /**
     * 获取当前时间戳 long 纳秒
     *
     * @return /
     */
    public static long currentNanoTimestamp() {
        // 获取当前时间戳（纳秒）
        return System.nanoTime();
    }

    public static String currentDayZeroTime() {
//        // 定义日期时间格式
//        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
//        // 解析字符串为LocalDateTime对象
//        LocalDateTime dateTime = LocalDateTime.parse(dateTimeString, formatter);
//        // 获取当前日期
////        LocalDateTime currentDate = LocalDateTime.now().toLocalDate().atStartOfDay();
//        LocalDateTime currentDate = dateTime.toLocalDate().atStartOfDay();
//        // 将秒数加到当前时间（分钟级别）上
//        LocalDateTime targetTime = currentDate.plusSeconds(seconds);
//        // 获取系统默认时区
//        ZoneId zoneId = ZoneId.systemDefault();
//        // 转换为带时区的时间
//        ZonedDateTime zonedDateTime = targetTime.atZone(zoneId);
        return "";
    }

    /**
     * 转换long型秒为 字符串String
     *
     * @param seconds 秒
     * @return /
     */
    public static String convertSecondsToDateString(long seconds) {
        // 获取当前日期和时间（不包括秒和纳秒）
        LocalDateTime now = LocalDateTime.now().truncatedTo(ChronoUnit.MINUTES);
        // 将秒数加到当前时间（分钟级别）上
        LocalDateTime targetTime = now.plusSeconds(seconds);
        // 获取系统默认时区
        ZoneId zoneId = ZoneId.systemDefault();
        // 转换为带时区的时间
        ZonedDateTime zonedDateTime = targetTime.atZone(zoneId);
        // 定义日期时间格式
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        // 格式化日期时间为字符串
        return zonedDateTime.format(formatter);
    }


}
